#include <memory>
#include <iostream>

class MyClass {
    int value;

    // 私有构造函数
    MyClass(int val) : value(val) {}

    // 声明辅助函数为友元，允许其访问私有构造函数
    friend std::unique_ptr<MyClass> makeMyClassUniquePtr(int val);

public:
    void printValue() const {
        std::cout << "Value: " << value << std::endl;
    }
};

// 辅助友元函数，用于创建MyClass的实例
std::unique_ptr<MyClass> makeMyClassUniquePtr(int val) {
    return std::unique_ptr<MyClass>(new MyClass(val));
}

int main() {
    auto myClassInstance = makeMyClassUniquePtr(2024);
    myClassInstance->printValue(); // 输出: Value: 2024

    return 0;
}